Utilizing and maintaining data definitions during process thread traversals

ABSTRACT

A method, apparatus, and article of manufacture for traversing a process tree in a digital video editing system. A process tree is loaded into a digital video-editing system. The process tree has parent nodes that are dependent on output data from child nodes. Each parent node and each child node represents a digital video processing task to be performed during a traversal of the process tree. Each parent node declares a data definition and data default values. The data definition defines a structure of the data used by that parent node. For each parent node processed, a determination is made regarding whether the data definition for the output data received from a dependent child node is compatible with the data definition declared for that parent node. If the data definition is incompatible, the parent node utilizes the data default values.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of and claims the benefit under 35U.S.C. Section 120 of the following co-pending and commonly-assignedU.S. utility patent application(s), which is/are incorporated byreference herein:

Utility application Ser. No. 10/196,652, filed Jul. 15, 2002, abandonedand no longer copending, by Itai Danan, entitled “PROCESSING IMAGEDATA”, which application claimed the benefit under 35 U.S.C. §119 of thefollowing co-pending and commonly assigned foreign patent application,which application is incorporated by reference herein: United KingdomPatent Application No. 01 21 110.1, entitled “PROCESSING DATA”, filed onAug. 31, 2001.

This application is related to the following co-pending andcommonly-assigned patent application, which application is incorporatedby reference herein:

U.S. patent application Ser. No. 10/196,671, now U.S. Pat. No. 7,155,719issued on Dec. 26, 2006, entitled “CONTINUATION MANAGER”, by Itai Danan,filed on Jul. 15, 2002;

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to initialising and maintaining astructure referencing data during execution of an application running ona computer.

2. Description of the Related Art

The speed and capacity of processing and data storage devices hasgradually shifted the limits of application functionality from hardwareto application instructions themselves.

The increasing complexity of many applications is such that it is nolonger possible to consider a set of application instructions as everbeing finished. Instead, the source code for these instructions evolvesover time, and improves according to changing user requirements over aproduct lifetime spanning many years. Even in the shorter term,application instructions may change from day to day. In order to managethis constant evolution and minimise the problems arising from itsinherent complexity, it is established good engineering practice forapplications to comprise a large number of small sets of instructions ormodules.

Individual teams of engineers can work on modules separately, and thisenables parallel evolution of several aspects of an application'sfunctionality. Theoretically, any complex application can be broken downinto sufficiently small individual modules so that complexity, at themodule level, never becomes a limiting factor. However, as the number ofsaid modules increases, the problem of combining them to work togetherbecomes more difficult. In the art, it is this problem which places anupper limit on the complexity of reliable application evolution.

A fundamental difficulty when combining modules in an application, isthe initialisation of the data said modules provide a specificfunctionality for the processing thereof. A main application maycomprise tens or even hundreds of said modules, and should any of saidmodules fail to initialise and/or process data generated by another ofsaid modules, this may generate a corruption of the output data or evena main application crash.

The initialisation has to occur before the main application processingbegins and, in the case of dynamically loaded modules known in the artas ‘plug-ins’, said initialisation often has to occur during said mainapplication processing. In order to avoid this problem, engineerstraditionally have to keep application complexity as low as possible,while still fulfilling the application requirements, and thus thereexists a limit to the creativity with which engineers may devise new orimproved modules for a main application.

A further problem encountered by individual teams of engineers is thatthey traditionally have to implement their expertise in an applicationby using the application's specific Application Programming Interface(API). The equipping of numerous different applications with the samespecialist functionality can prove expensive and time-consuming, as saidspecialist functionality must be modified for implementation accordingto every different API.

In certain environments, such as video editing, application size andcomplexity cannot be avoided, and so it is possible for very significantand costly difficulties to occur, when attempting to process input databy means of said modules to generate an output, such as a video sequenceor composite image.

A need therefore exists for allowing an application to benefit from acombination of modules developed under differing APIs without howevercompromising the overall functionality of said application due to thecorruption of any of said modules' output.

SUMMARY OF THE INVENTION

It is an object of the present invention to provide an improved methodof initialising and maintaining a register of data definitions in anapplication comprising a large number of application modules.

According to an aspect of the invention, there is provided a method ofprocessing data including a plurality of processes, wherein a firstprocess supplies data of a predetermined type to a second process,wherein said second process stores type data identifying the type ofdata it expects to receive from said first process and said secondprocess is configured to modify its output if the data which is receivedfrom said first process differs from said stored data type.

In a preferred embodiment of the present invention, each of said firstand second processes stores said type data and default values thereofwithin a data type register. Preferably, each of said first and secondprocesses accesses said data type register according to saiddependencies by means of a process thread.

In a preferred embodiment of the present invention, each of said firstand second processes stores actual data in said data type register bymeans of said process thread. Preferably, said second processes modifiesits output with processing said stored default data if said storedactual data of said first process cannot be processed at said secondprocess.

In a preferred embodiment of the present invention, the respectivefunctionality of each of said plurality of processes are invoked bymeans of a task processing sequence. Preferably, said sequence isprocessed by said process thread and said task-processing sequencedefines child and parent processes, the output data of said parentprocesses being dependent upon the output data of their respectivechildren processes.

In a preferred embodiment of the present invention, the output data ofeach of said plurality of processes comprises either processed actualdata or processed default data or a combination thereof.

In the preferred embodiment of the present invention, a singleprocessing pipeline is thus defined by said process thread.

According to another aspect of the invention, there is provided anapparatus configured to process data, comprising display meansconfigured to display a plurality of processes equipped withdependencies, storage means configured to store said plurality ofprocesses equipped with dependencies. Said processing means isconfigured by said plurality of processes equipped with dependencies toperform the processing steps of supplying data of a predetermined typeto a second process at a first of said plurality of processes; accessingtype data identifying the type of data it expects to receive from saidfirst process at said second process of said plurality of processes; andmodifying its output if the data which is received from said firstprocess differs from said accessed data type at said second process.

According to yet another aspect of the invention, there is provided acomputer system programmed to process data, including a plurality ofprocesses equipped with dependencies, programmed to perform theprocessing steps of supplying data of a predetermined type to a secondprocess at a first of said plurality of processes; accessing type dataidentifying the type of data it expects to receive from said firstprocess at said second process of said plurality of processes; andmodifying its output if the data which is received from said firstprocess differs from said accessed data type at said second process.

According to yet another aspect of the invention still, there isprovided a computer readable medium having computer readableinstructions executable by a computer, such that said computer performsthe steps of supplying data of a predetermined type to a second processat a first of said plurality of processes; accessing type dataidentifying the type of data it expects to receive from said firstprocess at said second process of said plurality of processes; andmodifying its output if the data which is received from said firstprocess differs from said accessed data type at said second process.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows a network for connecting multiple user terminals;

FIG. 2 shows a networked user terminal as shown in FIG. 1 in furtherdetail, as an image processing system;

FIG. 3 details the operational steps according to which a user operatesthe image processing system of FIG. 2;

FIG. 4 details the hardware components of the image processing system ofFIG. 2 in further detail;

FIG. 5 shows an example of the relationships existing between thevarious processing modules of an application run by the image processingsystem as detained in FIG. 4;

FIG. 6 shows an edited example of the source code for a processingmodule of FIG. 5, according to the invention;

FIG. 7 shows the process of starting an application, including themodules detailed in FIGS. 5 and 6, according to the invention;

FIG. 8 shows the contents of the main memory as shown in FIG. 4subsequently to the processing steps detailed in FIG. 7;

FIG. 9 graphically illustrates the instantiation of the data typeregister of the invention within the main memory as shown in FIG. 8;

FIG. 10 shows a process tree as an example of the task processingsequence shown in FIG. 8;

FIG. 11 graphically illustrates the processing flow, known as traversal,of the various processing modules invoked by the process tree of FIG. 10according to the known art;

FIG. 12 details the processing steps of the main application shown inFIG. 8 once the initialisation process is completed;

FIG. 13 details the processing steps of the process thread shown in FIG.12 according to the invention;

FIG. 14 details the processing steps of the continuation thread alsoshown in FIG. 12 according to the invention;

FIG. 15 details the processing step of the cache thread also shown inFIG. 12 according to the invention;

FIG. 16 provides a graphical representation of a multiple processingpipeline generated by a processing cycle according to the prior art;

FIG. 17 shows an edited example of the source code for a contextfunction invoked by a processing module shown in FIG. 16, according tothe prior art;

FIG. 18 shows the source code of FIG. 17 modified according to theinvention;

FIG. 19 shows the processing cycle of FIG. 16 generating a multipleprocessing pipeline according to the invention, based upon theconcurrent processing of the process thread of FIG. 13, continuationthread of FIG. 14 and cache thread of FIG. 15;

FIG. 20 shows the cache management effected by the cache thread of FIG.15 within the processing cycle of FIG. 19;

FIG. 21 provides a graphical representation of the data generated ateach processing module of the process tree shown in FIG. 10 when saidprocessing modules are traversed according to the invention;

FIG. 22 provides a graphical representation of the data type register ofthe invention during the traversal shown in FIG. 21;

FIG. 23 details the processing steps performed by the operating systemshown in FIG. 8 in order to load a new processing module at run-time;

FIG. 24 shows the process tree detailed in FIG. 10 including a newprocessing module as a result of the processing steps shown in FIG. 23;

FIG. 25 shows the data type register of FIG. 22 altered by theprocessing of the process tree shown in FIG. 24.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

The invention will now be described by way of example only withreference to the previously identified drawings.

FIG. 1

Most modern data-processing applications, whether generic such as wordprocessors and spreadsheet applications or very specific such as digitalvideo editing applications, undergo daily evolution, throughmodification and/or improvement of their numerous function-specificmodules, also known to those skilled in the art as ‘plug-ins’.

It is well known in the art for individual teams of engineers, who aretotally removed from the company producing a specific application, tocreate new- or modify existing function-specific modules in order toimprove said application's functionality, thus enhancing any of suchgeneric or specific applications with said engineers' own particularexpertise. An example would be an engineer specialising inthree-dimensional motion tracking technology, who prefers to confer itstechnological expertise to most applications requiring said motiontracking functionality, such as image compositing, virtual worldsmodelling or avatar animating, rather than any specific compositingapplication in particular.

Most engineers distribute plug-ins over networks such as the Internet,as numerous iterations of said plug-ins are traditionally circulated fortesting and debugging prior to commercial release amongst multiple usersusing a network of connected computers. An environment for connectingmultiple users to whom plug-ins will be distributed is illustrated inFIG. 1.

Computer terminals 101, 102 and 103 are image processing systems locatedat an image compositing company 104 and are connected to the Internet105 via an Internet Service Provider (ISP) 106.

Computer terminals 107, 108 and 109 are image processing systems locatedat a different image compositing company 110 and are also connected tothe Internet 105 via an Internet Service Provider (ISP) 111.

Computer terminal 112 is connected to the Internet 105 via an Internetservice provider (ISP) 113 and is operated by a third-party engineer asdescribed above.

The ISPs 106, 111 and 113 in combination with user terminals 101 to 111,provide each individual user with a unique IP address, e-mail accountand other optional Internet facilities such as are commonly provided toa user with an ISP account. Provided that appropriate data transferapplications, protocols and permissions have been set up, there isprovided the scope for terminals 101, 102 and 103 and terminals 107, 108and 109 to access data stored on terminal 112.

FIG. 2

An image processing system such as terminal 101 is illustrated in FIG.2. A processing system 201, such as an Octane™ produced by SiliconGraphics Inc., supplies image signals to a video display unit 202.Moving image data is stored on a redundant array of inexpensive discs(RAID) 203. The RAID is configured in such a way as to store a largevolume of data, and to supply this data at a high bandwidth, whenrequired, to the processing system 201. The operator controls theprocessing environment formed by the processing system 201, the videomonitor 202 and the RAID 203, by means of a keyboard 204, and astylus-operated graphics tablet 205. The processing system shown in FIG.2 is optimal for the purpose of processing image and other highbandwidth data. In such a system, the instructions for controlling theprocessing system are complex. The invention relates to any computersystem where processing instructions are of significant complexity.

Instructions controlling the processing system 201 may be installed froma physical medium such as a CDROM or DVD disk 206, or over a network,including the Internet. These instructions enable the processing system201 to interpret user commands from the keyboard 204 and the graphicstablet 205, such that image data, and other data, may be viewed, editedand processed.

FIG. 3

User operations of the system shown in FIG. 2 are summarised in FIG. 3.At step 301 the user switches on the computer system. At step 302application instructions for controlling the processing system 201 areinstalled if necessary. These instructions may be installed from a CDROMor DVD 206, or via a network, possibly the Internet 105. At step 303 theuser interacts with the processing system 201 in such a way as to startthe application instructions. At step 304 the user interacts with theapplication now running on the processing system 201. These interactionsinclude the loading and saving of files.

Files of various formats may be loaded and saved. Each file format has aspecific set of instructions for loading and saving. Where a largenumber of formats are to be loaded and saved, instructions for allformats are not loaded simultaneously. Instead, instructions for formatloading and/or saving are only loaded when the user initiates an actionthat explicitly requires them. Instructions of this kind are sometimesreferred to as plug-ins, reflecting the fact that a user can obtain suchinstructions and make them available to the main application accordingto his or her specific needs.

Plug-ins may provide a broad variety of functionality. In imageprocessing, various types of image filtering, enhancement andmodification can be performed by algorithms available as plug-ins.Furthermore, the main application instructions and additional plug-insneed not be written by the same engineer who wrote the main application.According to the prior art, they merely need to conform to theapplication's standard application programming interface.

At step 305 the user closes the application, and at step 306 theprocessing system 201 is switched off.

FIG. 4

The processing system 201 shown in FIG. 2 is detailed in FIG. 4. Theprocessing system comprises two central processing units 401 and 402operating in parallel. Each of these processors is a MIPS R12000manufactured by MIPS Technologies Incorporated, of Mountain View, Calif.Each of these processors 401 and 402 has a dedicated secondary cachememory 403 and 404 that facilitate per-CPU storage of frequently usedinstructions and data. Each CPU 401 and 402 further includes separateprimary instruction and data cache memory circuits on the same chip,thereby facilitating a further level of processing improvement. A memorycontroller 405 provides a common connection between the processors 401and 402 and a main memory 406. The main memory 406 comprises twogigabytes of dynamic RAM.

The memory controller 405 further facilitates connectivity between theaforementioned components of the processing system 201 and a highbandwidth non-blocking crossbar switch 407. The switch makes it possibleto provide a direct high capacity connection between any of severalattached circuits. These include a graphics card 408. The graphics card408 generally receives instructions from the processors 401 and 402 toperform various types of graphical image rendering processes, resultingin images, clips and scenes being rendered in real time on the monitor202. A high bandwidth SCSI bridge 409 provides an interface to the RAID203, and also, optionally, to a digital tape device, for use as backup.

A second SCSI bridge 410 facilitates connection between the crossbarswitch 407 and a DVD/CDROM drive 411. The DVD drive provides aconvenient way of receiving large quantities of instructions and data,and is typically used to install instructions for the processing system201 onto a hard disk drive 412. Once installed, instructions located onthe hard disk drive 412 may be fetched into main memory 406 and thenexecuted by the processors 401 and 402. An input output (I/O) bridge 413provides an interface for the graphics tablet 205 and the keyboard 204,through which the user is able to provide instructions to the processingsystem 201.

Application instructions running on the processing system 201 arecomplex. Whether the application is a word processor, image editor or adigital film editor, the instructions that define the application'sfunctionality typically run into hundreds of thousands, if not severalmillions, of individual binary instructions for the processors 401 and402. Definition of these instructions is achieved by the use of a highlevel language such as C++, which is compiled into binary machine codecompatible with the intended target processor. However, the use of ahigh level language, while reducing the effort required to defineinstructions, still does not solve the complexity problem entirely. Ashigh level languages have become more sophisticated, this has allowedengineers to create more complex applications. The requirement oforganisation still imposes a limit upon the complexity that applicationinstructions can achieve. This complexity is minimised by splitting upan application into a large number of modules.

FIG. 5

A particular difficulty encountered when combining modules in a singleapplication is that of module compatibility. In FIG. 5, an illustrationis shown of the relationships between modules that lead to thisdifficulty. An application 501 comprises an executable module 502 andseveral other modules 503 to 505. The modules 502 to 505 are dynamicallyloaded shared objects. Under Unix-type operating systems, such as Irix™and Linux™, dynamically shared objects are usually abbreviated as dso's.They are also known simply as shared objects. Under Windows™ operatingsystems, dso's are known as dynamically loaded libraries, or dll's. Theexecutable module 503 defines the starting point of the applicationinstructions 501, while the other modules 502 to 505 provide additionalfunctionality that is invoked via the executable 502.

Each module 502 to 505 includes instructions 506, in the form of severalfunctions 507, and data structures 508. There are two types of data thatit is necessary to consider. The first type of data is user data,supplied usually from files on the hard disk 412, and which is to becreated, manipulated and stored by the application. User data includesword processing files, text files, image files and so on. However, froman engineer's perspective a second type of data exists, which has aneffect on the behaviour of the application, and the functions 507 withineach module. These types of data are indicated at 508.

An example of this type of data is a mathematical function which isrequired to calculate a sine function at high speed. A look up tableincludes a number of pre-calculated results, thus reducing significantlythe time required for the function to execute. Thus a data structureaffects a function in a module. In some implementations the datastructure is created when the application starts, by invoking aninitialisation function prior to the start of the main application. Inorder for the application to function correctly, it is essential for thesine function to be initialised before the application begins. This isan example where data structures 508 within modules must be initialised.

A second requirement for initialisation is when hardware components ofthe processing system 201 are to be initialised. For example, thegraphics card 408 has the potential to operate in a variety of displaymodes. The application may require a particular mode to operate. Inorder to do this, a graphics interface module 509 can be used tointerrogate the graphics card 408 and determine which of its availablemodes is suitable for the application. The graphics card is theninstructed to operate in the selected mode. Thereafter, many othermodules will require information about the selected graphics mode inorder to function correctly within the overall context of theapplication. This is an example of a requirement for hardwareinitialisation, which also results in data structures being initialised,that represent the behaviour and characteristics of the graphics card sothat other modules may function in an appropriate way.

Various types of modules require initialisation, although it is possiblethat some modules will require none.

FIG. 6

An edited example of the source code for a module 502 which requiresinitialisation at the start of an application is shown in FIG. 6according to the invention. The source code is written in C++, butdefines the actions of events that occur during the loading of themodule which may be implemented in binary process instructions or anyother appropriate instruction medium, and which may be stored on a harddisk drive 412, optical disk 206, or transferred as a stream over anetwork 105 to facilitate an initialisation process. Moreover, theexample in FIG. 6 is heavily edited to convey the essence of theinvention. Proper engineering practice known to those skilled in the artwill result in these features being placed in several files, includingheader files, and a source code file dedicated to initialisationfunctionality alone, as will be appreciated by those skilled in the art.

In the source code listing, a registration object is declared at 601.Because this is declared outside any function or other type ofstructure, it is static, i.e. it exists from the time the module isloaded to the time the module is unloaded. At 602, a constructor for thetemplate class invoked at 601 is defined. The constructor for a staticobject is called automatically by the loading process within step 303.Thus, even before the main application starts, the constructor for eachmodule is called. Any instructions may be placed here in order to definethe functionality of the registration object declared at 601.

An addDependency( ) function is called at 603, the arguments of whichare contained in brackets and define an additional dependency for thepresent module. The constructor shown in this example has four lines ofcode, each defining a dependency. Thus, as a result of executing thesefour lines of code, an entry will have been processed with the meaningthat the present module is dependent upon modules initialise, process,cache and continuation.

In order to implement the invention, a second function addContext( ) iscalled at 604. Its argument, contained in brackets, defines anadditional slot 606 including one or a plurality of default values 607in a data definition register 605 administered by the process module andfurther defines a comparison function to define the equality of values607 within the slot 606. The constructor shown in this example has oneline of code declaring the register 605 within which the functionalityof the present module will be called, the slot 606 within the context605 within which the definition of the present modules data is declaredand finally, the values 607 within said slot 606 which represents a setof default values of the output type when the functionality of thepresent module is invoked.

The operational functions of the example module 502 are subsequentlydeclared at 608, which define the purpose of said present module uponcompleting the application start process of step 303. In the particularcase of the executable module 502, a context object 609, cache object610 and continuation object 611 are declared amongst said other dynamicfunctions and each defines a thread concurrently processed by processes401 and 402 whilst a user interacts with the application at step 304.

For completeness in this example, code is also shown for theperformInitialise( ) 612 and performFinalise( ) 613. According to thepresent invention, only the executable module 502 needs to declaredynamic functions 609, 610 and 611, whereas all other modules need toregister a static register object 604 equipped with a register 605, slot606 and values 607 and declare a context object 609.

FIG. 7

The application start process of step 303 is further detailed in FIG. 7,wherein the data definition register of the present invention isgenerated. At step 701, an operating system running on the processingsystem 201 performs loading of all application modules. As a result ofthis process, each module is registered in a list, along with itsdependencies which are processed and validated. According to theteachings of co-pending British patent application No. 01 08 953.1 inthe name of the present Assignee, which are incorporated herein forreference, an initialisation schedule is generated by sorting themodules in order of the number of their dependencies, according to whichsaid modules are subsequently sequentially initialised. Thus, at step702, the first module in the initialisation schedule is selected. Whenstep 702 is first encountered, the executable module 702 is loaded and,at step 703, the initialisation function 612 is called for the selectedmodule. This has the result that the data 508 in the module, upon whichcorrect module functionality depends, is initialised before othermodules attempt to use the operational functions 507, 608. As a resultof the initialisation function 612, every module's static objects aredeclared, their dependencies registered (603) and the module's register605, data definition 606 and default values 607 thereof declared (604)and registered (609).

At step 704, a question is asked as to whether the data definition thepresent module seeks to register already exists in the data definitionregister. When the first executable module 502 is initialised, thereobviously exist no data definition register as yet and thus, thequestion asked a step 704 is answered negatively, whereby the datadefinition register is first generated, its data definition slot isincremented by a unit at step 705 and the data definition 606 anddefault values 607 thereof are declared within the data definitionregister at step 706.

As more modules are initialised after the executable module 502, some ofsaid subsequently initialised modules may perform various distinctfunctions on identically structured data. For example, a moduleengineered to provide a particularly fast method of previewing a threedimensional model composed of polygons will process the same data asanother module specifically engineered to provide a particularlyrealistic method of equipping the polygons of said three dimensionalmodel with a texture, i.e. polygons. Thus, question 704 may also beanswered positively, at which point control is directed to the next step707.

At said step 707, a question is asked as to whether all the moduleslisted in the initialisation schedule have been initialised. Until allof said modules have been initialised, the question 707 is answerednegatively, wherein control is returned to step 702 and the nextapplication module in the initialisation schedule is initialised.Question 707 is eventually answered positively and, at step 708 a taskprocessing sequence is loaded in main memory 406. Said task processingsequence is a data structure which details which specific modules loadedat step 701 and initialised at step 702 through to step 707 should beinvoked and in which particular order so that the application loaded atstep 302 and started at step 303 can provide the user's intended output.

For example, if the application is a database, the task processingsequence loaded at step 708 may comprise a report comprising data-miningand data-compiling queries consisting mainly of SQL statements.Accordingly, modules of the database application such as a booleansearch module and a mathematical functions module would be invoked inorder to firstly identify the relevant alpha-numerical data containedwithin the tables of said database, and subsequently process values ofsaid alpha-numerical data with mathematical functions.

Alternatively, in the specialist field of digital video editing, thetask processing sequence loaded at step 708 may be an edit decisionlist, also known to those skilled in the art as a process tree, whichrepresents image or audio data processing tasks to be performed in alogical order in order to generate a composited frame or even a completevideo sequence.

Upon performing the task processing sequence loading of step 708, theapplication processing starts at step 709.

FIG. 8

As a result of the processing performed by the steps in FIG. 7, thecontents of main memory 406 are as shown in FIG. 8. The operating systemthat performs the loading resides in main memory as indicated at 801.The application is also resident in main memory as indicated at 802.System data 803 includes data used by the operating system 801. In theexample, the operating system is Irix™, available from Silicon GraphicsInc., but the functionality of the present invention is equallyextensible to alternative operating systems, such as Windows 2000™ orWindows NT™, available from the Microsoft Corporation of Redmond, orLinux™, freely available under the terms of the GNU General PublicLicense or, alternatively, from a variety of commercial distributors.

Application data 804 includes data loaded by default at step 303 for theapplication, including a data definition register 805, a task processingsequence 806 and possibly image data 807, audio data 808, API specificdata 809 and eventually an error log 810.

The application 802 comprises a plurality of application modules,wherein said plurality of application modules is dynamic. That is, theapplication 802 comprises a finite number application modules uponcompleting the processing performed by the steps in FIG. 7, butadditional application modules, also known to those skilled in the artas plug-ins, may be dynamically loaded subsequently to the modulesalready loaded at the start of the application as the user interactswith the application 802 according to step 304.

The application 802 includes an executable module 811 which itselfincludes a process thread 812, a cache thread 813 and a continuationthread 814, respective details about which will be provided further inthe present embodiment. In addition to the executable module 811,application 802 includes a plurality of application modules 815, 816,817 and 818.

FIG. 9

According to the invention, although the data definition register 805 isinstantiated as a static object within main memory 406, its structure isdynamic and graphically illustrated in FIG. 9. As was previouslyexplained, the first application module to be initialised according tosteps 702 through to 707 is the executable module 811. Accordingly, asthe question 704 is answered negatively, the initialisation of theexecutable module 811 effectively instantiates the data definitionregister 805 itself as its first slot 901 is instantiated as a result ofthe processing step 705.

Thereafter, the next application module is selected at step 702 which,in the example, is module 815. As module 815 provides a first specificfunctionality for input data, the structure of which deferssubstantially from the input data to be processed by the executablemodule 811, the initialisation process of module 815 detects that thecorresponding data definition does not exist within data definitionregister 805 at step 704 and thus increments the data definitionregister slots by one unit 902, within which the specific datadefinition 606 and default values 607 thereof are subsequently declaredat step 706. Further data definition register slots 903, 904 andeventually 905 are respectively instantiated by the intialisationedprocessing steps 702 to 707 applied to modules 816, 817 and eventuallymodule 818.

FIG. 10

A simplified example of an edit decision list, or process tree, is shownin FIG. 10 as the task processing sequence 806 loaded into memory 406 atstep 708.

Process trees generally consist of sequentially-linked processing nodes,each of which specifies a particular processing task required in orderto eventually achieve an output 1001, under the form of a compositedframe or a video sequence. Traditionally, an output sequence 1001 willcomprise both image data and audio data. Accordingly, the compositedscene will thus require the output from an image-keying node 1002 andthe output of a sound mixing node 1003. The image-keying node 1002 callson a plurality of further processing nodes to obtain all of the inputdata it requires to generate the desired image data, or sequence ofcomposited frames. In the example, the desired output image dataincludes a plurality of frames within which a three-dimensional computergenerated object is composited, as well as a background also consistingof a plurality of three-dimensional objects superimposed over abackground texture.

The image-keying node 1002 thus initially requires a sequence of frames1004, each frame of which is subsequently processed by acolour-correction processing node 1005 and a motion tracking processingnode 1006 such that the composited three-dimensional object generated bythree-dimensional modelling node 1007, to which is applied a texture bythe texturing node 1008 and appropriate lighting by artificial lightprocessing node 1009 and finally appropriate scaling by scaling node1010, is seamlessly composited within the colour corrected sequence offrames 1004.

In so far as the background is concerned, the image keying processingnode 1002 also requires a uniform texture from a texturing node 1011,the functionality of which is similar to the texturing node 1008, towhich is applied the colour-correction functionality of acolour-correction processing node 1012, the functionality of which issimilar to the colour-correction processing node 1005. The image-keyingprocessing node 1002 finally requires to overlay the plurality of simplethree-dimensional objects generated from the three-dimensional modellingnode 1013, which are appropriately lighted by the artificial lightprocessing node 1014 and motion-tracked by means of the motion-trackingprocessing node 1015 over the colour corrected-texture 1011 beforeoverlaying the composited frame sequence of node 1004 on top of thecomposited background.

FIG. 11

Upon completing the loading of the process tree shown in FIG. 10 at step708, the application processing starts at step 709 and the processthread 812 executes the first process tree traversal. The traversal of aprocess tree designates a processing cycle which takes placeapproximately every one thirtieth of a second and is shown in furtherdetail in FIG. 11.

As was previously explained, a process tree is a task processingsequence, wherein input data is pulled by a parent node from itschildren nodes, i.e. processing nodes from which a processing nodedepends. In FIG. 11, the direction of processing is represented by adotted line 1101, which shows that sequential node processingtraditionally starts from the leftmost branch of a process tree to itsrightmost branch. For any given branch comprising processing nodes, thetraversal moves from the topmost parent processing node 1102 to the lastchild processing node 1103 of a branch. The traversal then reversesdirection and moves back (1104) to the last parent node 1105 of thebranch, at which point the input data processed by the traversedchildren nodes is pulled by said parent node 1105.

The traversal then considers whether there exists another branch 1106from said parent node 1105, at which point the traversal again movesdown the branch 1106 until such time as it reaches the last childprocessing node and moves back (1107) to parent node 1105. The aboveprocessing method is applicable to every combination of parent andchildren nodes within a process tree and thus a processing cycle onlyfinishes when the traversal eventually returns (1108) to the topmostparent node 1102, which is traditionally the output node of the processtree, at which point a second traversal begins and so on and so forth.

FIG. 12

The traversal is an integral part of the application 802 at runtime inso far that it takes place from the moment the application processing isstarted at step 709 until such time as the application is closed at step305, whether the user of system 201 actively interacts with theapplication by means of specifying new processing tasks or modifyingexisting processing tasks by means of keyboard 204 or touch tablet 205,or whether the user of system 201 does not provide any input for anunspecified duration. The various steps performed by application 802 atruntime are further detailed in FIG. 12.

It was previously explained that, upon starting the applicationprocessing of step 709 the process thread 812 of the executable module811 executes the first traversal of the process tree 806. Consequently,at step 1201, the process thread, or traversal, is shown as running andis also shown as including both the continuation thread 813 and thecache thread 813, which are concurrent sub-processes of said processthread.

At step 1202, a question is asked as to whether the user interactingwith application 802 requires a new application module 818. If thequestion 1202 is answered positively, then the new module 818 is loadedat step 1203, the processing details thereof will be further detailed inthe present embodiment. Control is subsequently directed to step 1204.Alternatively, if the question asked a step 1202 is answered negatively,control is also directed to step 1204, wherein another question is askedas to whether the user has interacted in such a way as to signify hisintent to close the application 802. If the question asked at step 1204is answered positively, then control is directed to step 305, whereinthe application is closed and system 201 is eventually switched off atstep 306. Alternatively, if the question asked at step 1204 is answerednegatively, control is subsequently returned to the concurrently runningprocess thread 812, continuation thread 814 and cache thread 813 of step1201.

FIG. 13

The processing steps according to which the process thread 812 at step1201 traverses the task-processing sequence 806 illustrated in FIG. 11,are further detailed in FIG. 13.

At step 1301, the process thread, or traversal, selects the nextprocessing node within the process tree according to the processingdirection 1101. At step 1302, a question is asked as to whether theselected node has new input data; if the question is answerednegatively, then control is directed to step 1309, which will bedetailed further below in the present embodiment. Alternatively, thequestion asked at step 1302 is answered positively and the contextobject 609 of the selected node accesses the data definition slot 606,901 in the data definition register 605, 805 at step 1303.

At step 1304, the process thread writes a data definition accesssignature bit in the data definition register in order to temporarilyrecord which specific slot is accessed by the processing node within thedata definition register at step 1303. At step 1305, a question is askedas to whether there already exists input data registered to the slotaccessed in the data definition register which is different from thedefault slot data. If the question asked at step 1305 is answerednegatively, control is directed to step 1307. Alternatively, if thequestion asked at step 1305 is answered positively, the process threadpushes the portion of main memory 406 specifically affected to the slotaccessed at step 1303 and known to those skilled in the art as thememory stack at step 1306, such that the new input data identified atstep 1102 can be registered within the data definition register asspecific values to replace the last or current default values 607 atstep 1307.

At step 1308, the slot access signature bit which was written at step1304 is OR-ed such that the next slot access within the cycle can beaccurately identified with the least possible resource usage.

Accordingly, at step 1309 a question is asked as to whether there existsanother processing node dependent upon the last node selected at step1301. If the question of step 1309 is answered positively, then controlis directed back to said step 1301. Alternatively, the process thread812 selects the last parent node accessed at step 1310, thusrepresenting the traversals change of direction 1104. In accordance withthe traversal description of FIG. 11, input data is pulled and processedat step 1311, whereafter a question is asked at step 1312 in order todetermine if all the dependent nodes from the parent node selected atstep 1310 are processed. If the question asked at step 1312 is answerednegatively, i.e. if another branch 1106 is identified, then control isdirected back to step 1301, wherein the next dependent node is selected.Alternatively, the memory stack which was pushed at step 1306 iseventually popped, or unloaded, at step 1313 and control is subsequentlydirected to step 1204 and so on.

FIG. 14

The continuation thread 814 operating at concurrently with the processthread 812 is further detailed in FIG. 14. The continuation thread is ineffect a sub-process of the process thread 812, and its function is toensure that for each processing node selected by the process thread, theoperational functions within said processing node are processed in anaccurately sequential order as specified by the module's main function608.

As a traversal is generally accomplished within a thirtieth of a second,but the various processing nodes composing a process tree may requirevarying lengths of time in order to generate the output required bytheir parent node, often as not exceeding one thirtieth of a second,there exists a need to process every operational function of eachprocessing node one at a time, i.e. process a fraction of the workloadof each processing node at every traversal, instead of processing thetotality of the main function 608 called by every processing node inturn.

Accordingly, as the process thread selects the next node in thetraversal at step 1301, the continuation thread 814 selects the nextoperational function within the application module represented by saidselected node at step 1401. At step 1402, a question is asked as towhether the next selected function requires input data. If the questionat step 1402 is answered negatively, control is forwarded directly tostep 1404. Alternatively, the question at 1402 is answered positivelyand the selected operational function accesses the cached data at step1403, whereafter the operational function of the selected node processesthe data at step 1404.

At step 1405, the question is asked as to whether a processing error hasoccurred, i.e. the function selected at step 1401 is unable to processthe data registered within the data definition register at step 1307 andinstead processes the default input data values 607. If the questionasked at step 1405 is answered negatively, control is subsequentlyforwarded directly to step 1407. If the question asked at step 1405 isanswered positively, however, the continuation manager logs the errordetected at step 1405 at step 1406 within the error log 810. Accordingto a preferred embodiment of the present invention, the continuationthread is configured to log which operational function of which modulehas experienced a control error, as well as the data definition registerslot 606, input data registered at step 1307 and default data 607.

Upon completing the error logging process of step 1406, a question isasked at step 1407 which considers whether there exists anotheroperational function in the selected node left to be processed. If thequestion at step 1407 is answered negatively, control is then returnedto step 1301 of the process thread, whereby the next node is selected,which enables the continuation manager to select the next function to beprocessed in said subsequently selected node. Alternatively, thequestion of step 1407 is answered positively, whereby another questionis asked as to whether there exists another dependent node for theprocess thread to select. If the question of step 1408 is answeredpositively, control is subsequently returned to step 1301 of the processthread. Alternatively, the continuation manager selects the nextavailable function in the current node at step 1401 in order to prunethe remaining workload within the current traversal.

FIG. 15

The cache thread 813 operating concurrently with the process thread andthe continuation thread at step 1201 is also a sub-process of theprocess thread 812. The function of the cache thread 813 is essentiallyto maximise the efficiency of the caching of input data required for thedata processing a parent node. In order to achieve this functionality,the cache thread precisely determines which input data needs to becached by a parent node from its children, utilising the least possibleprocessing resources, to the exclusion of any other data which does notrequire caching.

As the process thread 812 OR-s the access signature bit for thecurrently selected node at step 1308, the cache thread restores saidOR-ed access signature bit at step 1501 in order to accurately identifywhich data definition register slot 606, 901 was accessed by thecurrently selected node and thus at step 1502 match the data definitioncontained therein with the corresponding input data identified at step1302. Upon successfully carrying out said matching operation at step1502, the new input data is returned from the cache at step 1503.

At step 1504 a question is asked as to whether the process thread hasassessed that all dependent nodes have been processed at question 1312.If the question at step 1504 is answered negatively, the cache threadrestores the next access signature bit OR-ed by the process thread atstep 1308 at step 1501. Alternatively, the question of step 1504 isanswered positively, meaning that all the dependent nodes of the lastparent node selected have been processed and the cache threadsubsequently OR-s the input data currently held in the cache at step1505. The cache thread then again restores the next access signature bitOR-ed by the process thread at step 1308 at step 1501, and so on and soforth.

FIG. 16

The process thread detailed in FIG. 13, continuation thread detailed inFIG. 14 and cache thread detailed in FIG. 15 of the present inventionare concurrent processes which, when processed by processors 401 and 402at runtime, instantiate a single processing pipeline, the benefit ofwhich will be better appreciated by reference to a processing cycleaccording to the prior art shown in FIG. 16.

For the purpose of clarity, a simplified processing cycle 1601 is shown,which includes a parent node 1602 and three children nodes 1603, 1604and 1605. It will be understood and apparent to those skilled in the artthat the following detailed description of processing cycle 1601 couldequally apply to much more extended processing cycles, such as thetraversal 1101 shown at FIG. 11, which potentially includes hundreds ofeven thousands of combinations of parent and children nodes.

According to the prior art, in order to generate the output data 1606 ofthe parent processing node 1602, two operational functions 1607 and 1608are sequentially called. The first function 1607 called requires theoutput data 1609 of a first child processing node 1603 and the outputdata 1610 of a second child processing node 1604 as its input data. Thesecond function 1608 called requires the output data 1611 of the thirdchild processing node 1605 as its input.

As the output data 1609 and 1610 are sequentially pulled by the function1607, after which the second function 1608 pulls the output data 1611,it can be appreciated that the parent node 1602 has no knowledge of thedata definition or, in essence, structure of the output data 1609 priorto function 1607 first attempting to process said output data 1609 whenpulled. Similarly, the parent node 1602 has no knowledge of the datadefinition of output data 1610 and the data definition of output data1611.

With reference to the sequential manner in which functions 1607 and 1608pull data from the children nodes 1603, 1604 and 1605, there exists thepotential for the output data 1606 of the parent node 1602 to becorrupted or even for either of function 1607 or 1608 to ceaseprocessing input data and thus potentially crash the application if anyof the pulled data 1609, 1610 and 1611 does not conform to the datastructure, or definition, required by said functions 1607, 1608. Saidlack of conformity may arise from an engineers' mistake whenimplementing functionality to the application modules 1603, 1604 or 1605or, alternatively, because an engineer has implemented saidfunctionality and thus its output data outside the applications'standard API rules.

FIG. 17

According to the present invention, however, a data definition 606 anddata default values 607 are declared within a data definition register605 by every single application module 811 to 818 of application 802initialised according to the invention at step 303. Upon starting theapplication processing at step 709, the process thread 812 of thepresent invention enables parent and child processing modules toregister (the input data 1609, 1610 and 1611 actual values of) withinthe data definition register 805, i.e. the scope of a parent nodefunctionality, e.g. the processing cycle 1601 of parent node 1602.

The present invention maintains the scope of the parent's nodefunctionality by means of the context object 609, which will be betterunderstood by those skilled in the art with reference to a contextfunction implemented according to the prior art. An edited example ofthe source code for a context function according to the prior art isshown in FIG. 17. The source code is written in C++ and is heavilyedited to convey the essence of its functionality, as will beappreciated by those skilled in the art.

In the source code listing, a function is declared, such as for instancefunction 1607. At 1701, the line of code which will be compiled intomachine-readable instructions that can be processed by processors 401,402 pushes the data definition register slot 606 according to step 1306,thereby defining the duration of the scope 1702 of function 1701.Operational sub-functions 1703 and 1704 are subsequently called andprocessed within scope 1702 until such time as the processing iscompleted at 1705 and the memory stack is unloaded at 1706 according tostep 1313, thereby terminating the scope 1702.

As said memory stack is unloaded by the line of code 1706, the datadefinition and actual values are unloaded within the data definitionregister such that the next function 1608 cannot benefit from the datadefinition and values registered within scope 1702.

FIG. 18

The above limitation is overcome by the present invention with theimplementation of the context object 609, which is further detailed inFIG. 18. An edited example of the source code is shown as written in C++and is heavily edited to convey the essence of the invention. Properengineering practice known to those skilled in the art will result inthese features being placed in several files, including header files, aswill be appreciated by those skilled in the art.

In the source code listing, a context object 609 is initially declared,within which a scope function 1801 is first declared in order to definethe duration of the scope 1802 according to the invention. Conditionalparameters 1803 are subsequently implemented, which define instancesaccording to which the data definition 606 and values 607 should bepushed within the data definition register 605, 805 according to step1306 by means of instructions 1804.

As the duration of the scope 1802 is initiated before any operationalfunctions are called, such as functions 1607, 1608, the scope 1802remains active and maintains all of the changes of the data definitionregister 605, 805 accessible to said subsequently called operationalfunctions 1607, 1608. As the context object 609 is invoked at everyparent processing module within a task processing sequence 806, each ofsaid parent processing module eventually generates output data, at whichpoint its operational functions 1607, 1608 cease being invoked and thecontext object 609 terminates at 1805, thereby unloading the memorystack according to step 1313.

FIG. 19

Changes within the data definition register 605, 805 during a processingcycle such as processing cycle 1601 are shown according to the inventionin FIG. 19. The data definition register 805 is shown equipped with datadefinition register slots 1901, each of which represents the datadefinition 606 and default values 607 thereof for every processingmodule 1602 to 1605 initialised for an application. Data definitionregister 805 also includes an access signature bit slice 1902, whereineach data definition slot 1901 within the data definition register isassigned an OR-ed signature bit 1903.

As the processing cycle 1601 is initiated, the next node 1603 isselected according to step 1301, the process thread determines thatthere exists new input data 1609, the corresponding data definition 606is accessed in the data definition register 805 and the correspondingaccess signature bit 1904 is written according to step 1304. Therealready exists a default values 607 registered within register 805 sothe stack is shown as pushed according to step 1306 and input data 1609is shown as registered within the register 805.

The next operational function of child node 1603 is selected by thecontinuation manager according to step 1401 and, as no input data isrequired, said first operational function processes its data at step1404. In the example, no processing error occurs and there exists noother function to be carried out by child node 1603, thus thecontinuation thread will select the next node selected by the processthread at step 1301, i.e. child module 1604.

The access signature bit 1904 is subsequently OR-ed according to step1308 at 1905, whereby it is restored by the cache manager according tostep 1501, which matches the access signature bit 1904 to the datadefinition 606 and input data 1609, and thus writes said data 1609 tothe cache (not shown) of the parent node 1602. At step 1309, thereexists another dependent node 1604 and the process thread subsequentlyselects the next child module 1604, whereby the cache thread awaits thenext signature bit OR-ing.

In accordance with the method described thereabove, the data 1610 of thechild module 1604 is registered within the data definition register 805after the corresponding access signature bit 1906 is written. Saidaccess signature bit 1906 is subsequently OR-ed at 1907, whereby data1610 is also cached within the cache of parent node 1602. Upon selectingthe next child module 1605, the process thread writes the accesssignature bit 1908, data 1611 is registered within the data definitionregister 805 and cached within the parent node cache. Said accesssignature bit 1908 is eventually OR-ed at 1909. Throughout processingcycle 1601, the parent node 1602 has full knowledge of the datadefinitions 606, default values 607 thereof and actual values 1609 to1611 such that, should the processing of said data 1609 to 1611 resultin a processing error at step 1405 and subsequent error logging at step1406, functions 1607 and 1608 process the default data values 607 ratherthan the actual data 1609 to 1611, thus nullifying any corruption of theoutput data 1606 of the parent node 1602, or even fatal processing errorby functions 1607, 1608.

FIG. 20

The efficiency of the memory cache management implemented by the cachethread 813 of the present invention is further detailed in FIG. 20,whereby the contents of a memory cache 2001 implemented either insecondary cache 403, 404 or main memory 406 or a combination thereof areshown over a period of time equivalent to one processing cycle such asprocessing cycle 1601.

It was previously explained that as the first access signature bit 1904is OR-ed at 1905, it is restored by the cache thread according to step1501, whereby it enables the cache thread to match the correspondingdata definition 606 with actual data, such as data 1609. Upon completingsaid matching operation, the cache thread is configured to write saidinput data 1609 within cache 2001 and, commensurate with the sequentialmethod of module traversal by the process thread 812, the cache threadsequentially writes input data 1610 and 1611 within cache 2001 and itcan be assessed that only the data required by the parent processingmodule 1602 is cached, to the exclusion of any other irrelevant data.This enables said parent module 1602 to accurately pull (2002) the inputdata 1609, 1610 and 1611 from the cache 2001 for processing, whereby theabsence of irrelevant data improves processing time since the parentnode 1602 does not need to sieve said extraneous, irrelevant data.

In the example, all dependent modules 1603, 1604 and 1605 have beenprocessed by the process thread 812 at 2003 and said process threadunloads the memory stack at step 1313, thereby invoking the cache threadto clear the cache at step 1504, whereby the cache 2001 is OR-edaccording to step 1505 for the next processing cycle 2004.

FIG. 21

In the example field of digital video compositing, wherein taskprocessing sequence 806 mostly takes the form of the process treedetailed in FIG. 10, the processing cycle 1601 of which is detailed astraversal 1101 to 1108 in FIG. 11, the benefits of the present inventionwill be clearly appreciated by those skilled in the art. Indeed it iscommon for process trees to incorporate hundreds and potentially eventhousands of logically-linked process nodes configured as parentprocessing nodes and children processing nodes, each of which symbolisesthe call on operational functions of application modules 811 to 818. Ina preferred embodiment of the present invention, there results theability for the user of a video editing terminal 201 to reliably obtainan output composited frame or sequence even if an operational functioninvoked malfunctions during a traversal. Moreover, there also resultsthe ability for the user of the video editing terminal 201 to implementnew tasks within the task processing sequence 806, thus potentiallydeclaring new parent and children nodes, the operational functions ofwhich need not be declared within the same API as the application 802 solong as each of said new modules initialises a data definition registerslot 606 and default values 607 thereof within the data definitionregister 805.

The respective output data of each parent and children nodes 1001 to1015 of the process tree detailed in FIG. 10 are graphically shown inFIG. 21 in order to illustrate the input data pulled and processed atstep 1311 within the context of the process thread, continuation threadand cache thread according to the present invention.

The traversal 1101, i.e. process thread 812, initially traverses theprocess tree in accordance with the detailed explanation of FIG. 11,thus initially proceeds to the leftmost last child node 1004, whereby anoperational function of the child node 1004 is invoked in order to fetcha frame 2101 which depicts a real plane photographed in front of a bluebackground in order to facilitate subsequent keying processes. Node 1005is a parent node of node 1004 and thus subsequently able to pull theframe 2101 from the cache, and its colour correction operationalfunction modifies the colour 2102 of said frame by applying a processingrule to every pixel of said frame. According to the invention, it isknown to parent node 1005 that frame 2101 comprises a finite number ofpixels corresponding to the resolution of frame 2101 as the definition606 of the frame is an array of pixels and its default value 607 is forinstance the default number of pixels in a NTSC frame.

The traversal 812, 1101 subsequently identifies the next branchdepending from the parent node 1006 and thus proceeds to node 1007,whereby a three dimensional computer generated model 2103 of a plane isgenerated by operational functions of said node 1007. Its parent node1008 is subsequently able to pull said three-dimensionalcomputer-generated model in order to apply a “steel” bitmap texture toeach polygon of said three-dimensional model, which is a plane. It isknown to node 1008 that the three-dimensional model is composed ofpolygons defined by tessellating the smallest component of the model,which are vertices. The definition 606 of the three dimensional model isan array of polygons, and the default value is, say, a cube model. Theactual value registered within the data definition register 805 byprocessing node 1007 includes all of the three dimensional co-ordinatesof said vertices. Parent processing node 1008 is therefore able tocorrectly apply the “steel” bitmap texture to the array of polygons 2103generated by node 1007. According to the invention, if an operationalfunction of node 1007 was faulty and did not output an array of polygonsdefined in three-dimensional space which the operational function ofnode 1008 could thus process so as to equip the three dimensional model2103 with a texture, then the parent node 1008 would equip a cube withsaid steel bitmap texture, since it is the default value.

Processing node 1009 subsequently applies an artificial lightingalgorithm at 2105 to the textured three-dimensional model and processingnode 1010 can subsequently scale the lighted (2105), textured (2104)three-dimensional model 2103 at 2106. The parent node 1006 of nodes 1005and 1010 subsequently pulls the data of said nodes according to step1311 and calls an operational function designed to animate the realplane in the frame 2101 and the composited plane 2106 in relation to oneanother within a same three dimensional volume 2107, known to the thoseskilled in the art as motion-tracking.

With respect to the topmost graphical parent node 1002 within theprocess tree, two further branches respectively defined by nodes 1011,1012 and 1013 to 1015 have to be processed before it pulls the inputdata and processes said data itself. A “sky” bitmap texture 2108 is thusgenerated by node 1011 which is subsequently colour-corrected at parentnode 1012 using the same operational function as was invoked bycolour-correction processing node 1005 to process the frame 2101.

Similarly, a computer-generated three-dimensional “clouds” model 2110 isgenerated by node 1013 utilising potentially the same operationalfunction as was invoked by node 1007 to generate the “plane” threedimensional model. The three-dimensional model 2110 is subsequently lit(2111) at parent node 1014 using potentially the same lighting algorithmof the operational function called at node 1009. The lit (2111)three-dimensional model 2110 is subsequently motion-tracked (2112) atprocessing node 1015 utilising the same operational functions invoked bythe processing node 1006 in order to eventually match the motion of thereal and composited planes with the composited clouds.

Upon completing the processing 2112 at node 1015, the parent node 1002is thus able to pull all of the input data 2101 to 2112 and process itin order to generate a composite frame 2113, within which two planesappear superimposed over a sky and clouds.

FIG. 22

The evolution of the data definition register 805 of the parent node1001 maintained by the process thread 812 during the traversal 1101further detailed in FIG. 21 is graphically illustrated in FIG. 22.

For the purpose of clarity, the data definition register slots 2201 to2209 are arranged in the same order as the sequential order in whichparent and children nodes 1001 to 1015 are traversed. Thus, datadefinition register slot 2201 contains data definition and valuesrelevant to the chroma-keying functionality of parent node 1002; datadefinition register slot 2202 contains data definition and defaultvalues relevant to motion tracking node 1006; data definition registerslot 2203 contains data definition and default values relevant tocolour-keying processing node 1005; slot 2204 contains data definitionand default values pertaining to the frame-acquisition processing node1004; slot 2205 contains data definition and values pertaining to thescaling processing node 1010; slot 2206 contains data definition andvalues pertaining to the artificial light processing node 1009; slot2207 contains data definition and default values pertaining to thetexture processing node 1008; slot 2208 contains data definition anddefault values relevant to the three dimensional modelling processingnode 1007 and slot 2209 contains data definition and default valuesparticularly relevant to the sound processing node 1003.

In accordance with the processing steps shown in FIG. 13, the traversal1101 initially references the input data of the chroma-keying node 1002at 2210, thereby pushing the default values 2201 up within the memorystack. The process thread next accesses the motion tracking node 1006,whereby motion tracking data 2211 is referenced within the datadefinition register 805, and the corresponding default values 2202 arealso pushed within the memory stack, as previously. In accordance withthe traversal previously detailed, colour correction actual data 2212,frame data 2213, scaling data 2214, computer generated artificiallighting 2215, bitmap texture data 2216 and three-dimensional model data2217 are similarly sequentially referenced within the data definitionregister, whereby their respective default values are similarly pushedin their respective stacks.

When the process thread selects the colour correction processing node1012, the question asked at step 1305 is answered positively and, in amanner similar to the previous registrations of actual data 2210 to2217, colour control actual data 2212 is similarly pushed up in thecolour control stack of the data definition register in order toregister the new colour control data 2218 particularly relevant tocolour correction processing node 2212. Thereafter, actual texture data2216, actual motion tracking data 2211, actual artificial lighting data2215 and actual three dimensional model data 2217 are respectivelypushed by new texture data 2219, new motion tracking data 2220, newartificial lighting data 2221 and new three dimensional model data 2222.

Upon image keying processing node 1002 pulling all of the input data2210 to 2222 in order to generate output composite frame 2113, the datadefinition register 805 is OR-ed, whereby actual input data 2210 to 2222are unregistered and data definition register 805 is returned to itsoriginal configuration (2224).

FIG. 23

It was previously explained that the data definition register 805 is adynamic structure, as it must extend its functionality to occasionswherein the user of processing terminal 201 requires a new applicationmodule to be loaded at step 1205 when interacting with the applicationat step 304. Said step 1205 is further detailed in FIG. 23.

According to a preferred embodiment of the present invention, within thecourse of the interaction with application 802, the user eventuallyperforms an action at step 2301 which requires the loading of one or aplurality of processing modules which were not initialised at step 303.Upon performing this specific action, the operating system 801 loads thenew processing modules in accordance with step 701 at step 2302, wherebythe static objects of said new modules are declared and the dependenciesand context thereof registered in accordance with processing steps 702to 707. If the operational functions of the new modules are configuredto process data, the definition of which is already registered withinthe data definition register 805, there is no need to re-register anidentical data definition and default values thereof within theregister. If, however, the operational functions of the new modules areconfigured to process data, the definition of which does not yet existwithin the register, then in accordance with steps 704 to 706, the datadefinition register slots 2301 to 905 are incremented by a unit,eventually resulting in the data definition register being updated atstep 2209.

The processing of the new module eventually starts at step 2304 when theinitialisation process is complete.

FIG. 24

The process tree detailed in FIG. 10 is shown in FIG. 24, including anew processing node 2401, the operational function of which is to applya deformation matrix to the artificially lit and textured threedimensional model 2103 to simulate a heat haze effect.

As the first traversal 1101 of the process tree shown in FIG. 10 iscompleted according to the invention, the user can ascertain from theoutput composite frame 2113 that the three-dimensional model-based planewithin the frame 2113 appears behind the real plane from frame 2101 andthus, in order to improve the realism of the shot, should appear atleast partially deformed by the heat haze of the exhaust of the realplane. In the example, application 802 does not include any applicationmodule, the operational function of which allows the user to implementthis effect within the composited frame 2113. The user of terminal 201thus connects to the internet 105 by means of a modem connection (notshown) to the ISP 106 in order to identify then download an applicationmodule which features this particular functionality from the engineer'sterminal 112.

Upon completing said download operation and initialising a processingmodule hence referred to as a deform module 2401 according to step 1205,the user of terminal 201 can implement a deform node 2401 as a child ofthe scaling node 1010 and the new parent of nodes 1007, 1008 and 1009.

In effect, the scaling operational function invoked by the scaling node1010 must now process a deformed (2401), lit (2105) and textured (2104)three dimensional model 2103. As a result of the concurrent processingaccomplished by the process thread 812, continuation thread 814 andcache thread 813, the input data of the deform node 2401 is registeredwithin the data definition register 805 and the default data value iszero, resulting in a non-deformation of the data submitted to saiddeform node 2401. Therefore, even if the deformation operationalfunction, which is the specific functionality of the application module2401 downloaded by the user, is not properly implemented ormalfunctions, the scaling node 1010 is still able to process anon-deformed, lit and textured three dimensional model.

FIG. 25

The evolution of the data definition register 805 during the traversal1101 shown in FIG. 22 is graphically represented in FIG. 25, including anew data definition register slot 2501 including a default value of zeroinstantiated when the deform processing module 2401 is initialised.

At the onset of the next traversal of the process tree, the datadefinition register 805 is shown which includes an additional slot 2501implemented as a result of the incrementation of step 505. Said slot2501 defines the “deform” data and a default value of zero, aspreviously explained. As the traversal progresses according to thedetailed description provided at FIG. 22, the process thread eventuallyselects the deform node 2401 at step 1301, whereby the node's actualdata 2502 is registered to the data definition register, thus pushingthe data definition and value up in this stack irrespective of the factthat the deform slot 2501 is not contiguous with the respective datadefinition register slots of the previous node or the subsequent node.

The traversal subsequently progresses, whereby the process threadselects the lighting node 1009 and its actual data 2215 is registeredwithin the data definition register and so on and so forth until suchtime as the data definition register is OR-ed at 2503.

1. A computer implemented method for traversing a process tree in adigital video editing system, the method comprising: (a) loading theprocess tree into the digital video editing system, wherein: (i) theprocess tree comprises one or more parent nodes and one or more childnodes; (ii) each of the one or more parent nodes is dependent on outputdata from at least one of the one or more child nodes; (iii) each of theone or more parent nodes and each of the one or more child nodesrepresents a digital video processing task to be performed during atraversal of the process tree to generate a digital video output; (b)each of the one or more parent nodes declaring a corresponding datadefinition and corresponding data default values, wherein the datadefinition defines a structure of the output data from a dependent childnode used by the corresponding parent node; (c) traversing the processtree, to generate the digital video output, by processing each of theone or more parent nodes and each of the one or more child nodes inlogical order, wherein: (i) for each parent node being processed,determining if the data definition for the output data received from adependent child node is compatible with the data definition declared forthat parent node; and (ii) when the data definition is incompatible, theparent node utilizing the data default values.
 2. The method oftraversing the process tree of claim 1, wherein each of the one or moreparent nodes stores said corresponding data definition and correspondingdata default values within a data type register.
 3. An apparatus fortraversing a process tree in a digital video editing system comprising:(a) a computer having a memory; (b) an application executing on thecomputer, wherein the application is configured to: (i) load the processtree into the digital video editing system, wherein: (1) the processtree comprises one or more parent nodes and one or more child nodes; (2)each of the one or more parent nodes is dependent on output data from atleast one of the one or more child nodes; (3) each of the one or moreparent nodes and each of the one or more child nodes represents adigital video processing task to be performed during a traversal of theprocess tree to generate a digital video output; (ii) have each of theone or more parent nodes declare a corresponding data definition andcorresponding data default values, wherein the data definition defines astructure of the output data from a dependent child node used by thecorresponding parent node; (iii) traverse the process tree, to generatethe digital video output, by processing each of the one or more parentnodes and each of the one or more child nodes in logical order, wherein:(1) for each parent node being processed, determining if the datadefinition for the output data received from a dependent child node iscompatible with the data definition declared for that parent node; and(2) when the data definition is incompatible, the parent node utilizingthe data default values.
 4. The apparatus of traversing the process treeof claim 3, wherein each of the one or more parent nodes stores saidcorresponding data definition and corresponding data default valueswithin a data type register.
 5. An article of manufacture comprising aprogram storage device readable by a computer, tangibly embodying atleast one program of instructions executable by the computer to performmethod steps of traversing a process tree in a digital video editingsystem, the method steps comprising the steps of: (a) loading theprocess tree into the digital video editing system, wherein: (i) theprocess tree comprises one or more parent nodes and one or more childnodes; (ii) each of the one or more parent nodes is dependent on outputdata from at least one of the one or more child nodes; (iii) each of theone or more parent nodes and each of the one or more child nodesrepresents a digital video processing task to be performed during atraversal of the process tree to generate a digital video output; (b)each of the one or more parent nodes declaring a corresponding datadefinition and corresponding data default values, wherein the datadefinition defines a structure of the output data from a dependent childnode used by the corresponding parent node; (c) traversing the processtree, to generate the digital video output, by processing each of theone or more parent nodes and each of the one or more child nodes inlogical order, wherein: (i) for each parent node being processed,determining if the data definition for the output data received from adependent child node is compatible with the data definition declared forthat parent node; and (ii) when the data definition is incompatible, theparent node utilizing the data default values.
 6. The article ofmanufacture of claim 5, wherein each of the one or more parent nodesstores said corresponding data definition and corresponding data defaultvalues within a data type register.